package com.koron.tool.util;

import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import lombok.extern.slf4j.Slf4j;

/**
 * @Author: liaodf
 * @Date: 2021/11/5 10:07
 */
@Slf4j
public class PdfUtil {

    /**
     * 创建pdf表格
     *
     * @param colNumber
     * @return
     */
    public static PdfPTable createTable(int colNumber) {
        PdfPTable table = new PdfPTable(colNumber);
        try {
            // 设置表格总宽度
            table.setTotalWidth(520);
            // 设置宽度100%使用
            table.setWidthPercentage(100);
            // 锁定设置的宽度
            table.setLockedWidth(true);
            // 默认居中
            table.setHorizontalAlignment(Element.ALIGN_CENTER);
            table.getDefaultCell().setBorder(1);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return table;
    }

    /**
     * 获取字体
     *
     * @param size  字体大小
     * @param style 字体风格，普通、加粗等
     * @return
     */
    public static Font getFont(int size, int style) {
        Font font = null;
        try {
            BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            font = new Font(baseFont, size, style);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return font;
    }

    /**
     * 创建单元格
     *
     * @param value   单元格值
     * @param font    单元格字体
     * @param align   水平对齐方式，如居中，居左，居右
     * @param colspan 合并单元格数量,不需要合并则输入0
     * @param rowspan 合并单元格数量,不需要合并则输入0
     * @return
     */
    public static PdfPCell createCell(String value, Font font, int align, int colspan, int rowspan) {
        if (null == value) {
            value = " ";
        }
        PdfPCell cell = new PdfPCell();
        // 设置垂直对齐方式，默认居中
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        // 设置水平对齐方式
        cell.setHorizontalAlignment(align);
        // 横向合并列
        if (colspan != 0) {
            cell.setColspan(colspan);
        }
        // 纵向合并行
        if (rowspan != 0) {
            cell.setRowspan(rowspan);
        }
        cell.setPhrase(new Paragraph(value, font));
        return cell;
    }

}
